package com.itheima.HomeWork_day11;
//统计一个文件夹中,每种文件出现的次数.
//统计 --- 定义一个变量用来统计. ---- 弊端:同时只能统计一种文件
//利用map集合进行数据统计,键 --- 文件后缀名  值 ----  次数

import java.io.File;
import java.util.HashMap;

/*
统计文件夹中出现的的每种文件的次数
 */
public class FileStat05 {

    public static void main(String[] args) {

        //添加路径
        File file = new File("Java_Jdk12");
        //使用map集合,将获取到的文件的后缀,和出现的次数放到集合中
        HashMap<String, Integer> map = new HashMap<>();
        //调用方法
        getCount(map,file);

        //最后打印集合
        System.out.println(map);


    }

    private static void getCount(HashMap<String, Integer> map, File file) {

        //遍历文件目录,并获取
        File[] files = file.listFiles();
        //将获取的目录进行遍历
        for (File file1 : files) {
            //判断是否为文件
            if (file1.isFile()){
                //如果是文件,获取文件的名字
                String file1Name = file1.getName();
                //将名字分割
                String[] split = file1Name.split("\\.");
                //只考虑名字长度是2的文件
               if ( split.length==2){
                   //获取到数组的第一个索引的元素
                   String endFile=split[1];
                   //进行判断集合中是否包含该键
                   if (map.containsKey(endFile)){
                       //如果包含,就说明已经存在
                       //将已经出现的次数取出来
                       Integer count = map.get(endFile);
                       //这种文件又出现了一次
                       count++;
                       //将已经存在的数据覆盖掉
                       map.put(endFile,count);

                   }else {
                       //说明之前不存在
                       //即就是文件第一次出现
                      map.put(endFile,1);
                   }
               }
            }else{
                getCount(map,file1);
            }
        }
    }
}
